from selenium import webdriver#Selenium进行网页自动化测试
# 导入 unittest
import unittest
from selenium.webdriver.common.by import By
import time

# 继承 unittest.TestCase 类
class BaiDu(unittest.TestCase):
    # 在 setUp 中，编写测试用例执行之前，需要预处理的内容
    def setUp(self):#在每个测试方法执行前运行。在这里，我们启动了一个Firefox浏览器，并导航到百度主页
        url = 'http://www.baidu.com'
        self.driver = webdriver.Firefox()
        self.driver.get(url)
        self.driver.implicitly_wait(30)#设置隐式等待时间为30秒

    # 测试用例 1，方法名必须以 test 开头，完成搜索功能测试
    def test_01_search(self):
        self.driver.find_element(By.NAME, "wd").send_keys("软件测试")
        self.driver.find_element(By.ID, "su").click()
        time.sleep(5)
        # 检查搜索结果的页面标题是不是“软件测试_百度搜索”
        self.assertEqual(self.driver.title, "软件测试_百度搜索")

    # 测试用例 2，方法名必须以 test 开头，完成进入新闻页面测试
    def test_02_access_news(self):
        self.driver.find_element(By.LINK_TEXT, "新闻").click()
        time.sleep(5)
        # 获取当前浏览器的所有窗口句柄
        handles = self.driver.window_handles#打开新窗口生成的字符串
        # 切换到新打开的页面
        self.driver.switch_to.window(handles[-1])#最后一个窗口句柄
        self.assertEqual(self.driver.title, "百度新闻—海量中文资讯平台")

    # 在 tearDown 中，编写执行测试用例之后，需要清除的内容
    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main(verbosity=2)
    